package com.lnsystem.dao;

import java.util.List;

import org.joda.time.DateTime;
import org.joda.time.LocalDate;

import com.lnsystem.model.AnalyticsEvent;
import com.lnsystem.model.Stock;
import com.lnsystem.model.StockDailyData;
import com.lnsystem.model.StockRating;
import com.lnsystem.model.StockWeeklyData;

public interface AnalyticsEventDao {



	    /**
	     * Gets all analytics events.
	     */
        List<AnalyticsEvent> getAllAnalyticsEvents();

        /**
         * Gets all events for a stock.
         * @param stock - the stock 
         */

        List<AnalyticsEvent> getAnalyticsEventsForStock(Stock stock);


        /**
         * Gets all events for a symbol
         * @param symbol - the stock symbol
         */
        List<AnalyticsEvent> getAnalyticsEventsForStock(String symbol);

        

        /**
         * Gets all events for a given date.
         * @param date - the date 
         */
        List<AnalyticsEvent> getAnalyticsEventsForADay(LocalDate date);
        
        /**
         * Gets all events for a stockdailydata object.
         * @param stockDailyData - the stock dailydata object
         */
        List<AnalyticsEvent> getAnalyticsEventsForADailyData(StockDailyData stockDailyData);

        /**
         * Gets all events of a specifiy type for a stockdailydata object.
         * @param stockDailyData - the stock dailydata object
         * @param eventType - the event type
         */
		AnalyticsEvent getAnalyticsEventsByTypeForADailyData(
				StockDailyData stockDailyData, String eventType);
		
		
        /**
         * Gets all stock daily data for a stock.
         * @param s - the stock 
         */
        int saveAnalyticsEvent(AnalyticsEvent event);
        
	
        /**
         * Flushes & clears the session
         */
		void flushAndClear();



}